混淆去日志的技巧经验原创
简书链接:混淆去日志的技巧经验原创
文章字数:600,阅读全文大约需要2分钟
使用方法
1 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),getProguardFilxe(),"proguard.cfg" |
1 | -assumenosideeffects class qssqtest.demo.test.Logs { |
1 |
|
/1、另外如果不适用上面的方式那么这方法也可以实现删除日志,
使用的技巧
1 | if (BuildConfig.DEBUG) { |
2、如果是拼接的log,光去掉Logw是不行的,会导致stringbunffer存在,因此方法是用一个boolean包裹起来,这样被包裹的逻辑全部将被删除,另外 -assumenosideeffects
里面不要写{*;}
否则你会发现某个类的构造init方法被删除了。导致程序崩溃。
3、某些情况开启assumenosideeffects
会导致出问题,所以说大程序使用的话要有心理准备,可能需要解决很多错误才能跑起来,我之前某个项目比较大,最终都没能解决。
争议
某些人说加个开关就行,我给大家普及一下吧
1 、你这样反编译后别人能看到源代码
2、你这样代码没删除并没有优化。
3、就算你开关室关闭的,如果是字符串拼接或者打印某些对象,那性能肯定有损耗的,虽然你没有打开开关,但是字符串已经生成了,程序大日志多的话不影响性能才怪。也调用了拼接的方法,有的甚至是堆栈调用。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 情迁博客!
评论